#pragma once

#include <rclcpp/rclcpp.hpp>

#include <behaviortree_cpp/action_node.h>

#include <fishbot_behavior_tree/custom_types.hpp>

#include <geometry_msgs/msg/pose_stamped.hpp>
#include <geometry_msgs/msg/vector3_stamped.hpp>

namespace fishbot
{
    namespace behaviors
    {
        class GetPoseStampedMsg : public BT::SyncActionNode
        {
        public:
            GetPoseStampedMsg(const std::string &name, const BT::NodeConfiguration &conf);
            static BT::PortsList providedPorts();
            BT::NodeStatus tick() override;
        };

        class GetVector3StampedMsg : public BT::SyncActionNode
        {
        public:
            GetVector3StampedMsg(const std::string &name, const BT::NodeConfiguration &conf);
            static BT::PortsList providedPorts();
            BT::NodeStatus tick() override;
        };
    }
}